package bancosys.tec.persist.span.fat;

import java.util.List;

import bancosys.tec.persist.Persistable;
import bancosys.tec.persist.span.SpanAwareBean;

/**
 * @created Mar 2, 2007
 * @author Rafael Volpato
 * @param <T> tipo da vigencia
 */
public interface FatSpanAwareBean<T extends SpanAwareBean> extends Persistable {

    /**
     * Retorna uma coleção das vigências do bean.
     * 
     * @return Lista de vigências do bean.
     */
    List<T> getVigencias();

    /**
     * @param vigencias Lista de vigencias para serem atribuidas ao bean
     */
    void setVigencias(List<T> vigencias);

    /**
     * @param vigencia Vigência para ser adicionada na lista de vigências do bean
     */
    void addVigencia(T vigencia);

    /**
     * @param vigencia Vigência para ser removida na lista de vigências do bean
     */
    void removeVigencia(T vigencia);

    /**
     * Devolve a última vigência.
     * <P>
     * O metodo getUltimaVigencia é utilizado apenas nas telas, sendo assim deveria ser implementado nos beans de tela, evitando assim a
     * utilizacao desse metodo durante o processamento!
     * 
     * @return a última vigência.
     */
    @Deprecated
    T getUltimaVigencia();
}
